package com.cn.bulu.dao;

import com.alibaba.fastjson.JSONArray;
import com.cn.bulu.pojo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface WorkerDao {
	// 注册工人
	public void insertWorker(Map<String, Object> map);

	// 判断手机号是否可以使用
	public int getWorkerNumber(String phone);

	// 得到工人id返回的是一个int类型传入的是map
	public int getWorkerId(Map<String, Object> map);

	// 完善工人信息
	public void completeWorkerData(Map<String, Object> map);

	// 修改密码
	public void updatePassword(Map<String, Object> map);

	// 登录
	public int getWorkerNumber2(Map<String, Object> map);

	// 修改头像
	public void updateHeadImg(Map<String, Object> map);

	// 查询可接订单
	List<Map<String, Object>> selectCIndent(Map<String, Object> map);

	// 查询订单是否有人接
	Integer selectNoBinging(Integer indentId);

	// 接取订单
	int updateReceive(Map<String, Object> map);

	// 查询已接订单
	List<Map<String, Object>> selectYIndent(Map<String, Object> map);

	// 查询钱包
	Double selectWallet(Integer workerId);

	// 工人放弃订单修改订单信息
	int updateIndent(Map<String, Object> map);

	// 改变订单的状态
	int updateStatus(Integer indentId);

	// 工人点击出发插入经纬度
	int insertJingwei(Map<String, Object> map);

	// 得到工人的信息
	Worker getWorkerId2(Map<String, Object> map);

	// 查询信息是否完善
	String getspace(Map<String, Object> map);

	// 查询可接订单各个类型数量
	Integer selectCeliang(@Param("type") Integer type, @Param("areaCode") List<String> areaCode);

	// 查询已接订单各个类型数量
	Integer selectYijie(Map<String, Object> map);

	// 查询已完成
	List<Map<String, Object>> selectYiwcheng(Map<String, Object> map);

	// 根据订单号查询有多少个房间
	List<String> selectLocation(Integer indentId);

	// 查询是否有其他房间
	List<String> selectOtherRoom(Integer indentId);

	// 根据房间查询商品
	List<Goods> selectXGoods(Map<String, Object> map);

	// 根据商品号查询配件
	List<String> selectPeijian(Integer goodsId);

	// 根据其他房间查询商品
	List<Goods> selectQGoods(Map<String, Object> map);

	// 查询布纱安装位置
	List<String> selectBS();

	// 查询安装房间
	List<Map<String, Object>> selectL();

	// 查询地区
	String selectKoukuan(Integer workerId);

	// 查询应扣款
	int selectPenalties(@Param("city") String city);

	// 扣除放弃订单额度
	int updateWallet(Map<String, Object> map);

	int updateCredit(Map<String, Object> map);

	// 查询工人信息
	Worker selectWorker(Integer workerId);

	// 查询明细工人
	List<Map<String, Object>>  selectMingxi(Map<String, Object> map);

	// 修改工人银行卡信息
	int updateWorkerBank(Map<String, Object> map);

	// 插入工人身份证图片
	int updatePicimg(Map<String, Object> send);

	// 插入特殊商品的特殊布
	int insertSpecial(Goods_special special);

	// 查询密码是否正确
	Integer selectPZQ(Map<String, Object> map);

	// 修改手机号
	int updatePhone(Map<String, Object> map);

	// 查询头像
	String selectTouxiang(String phone);

	// 根据商品id查询构成
	List<Composition> selectGoucheng(Integer goodsId);

	// 根据商品id查询样品
	Sample selectSample(Integer goodsId);

	// 把主布的用量什么的存到数据库
	int insertzhubu(Map<String, Object> map);

	// 查询遮光里布
	Composition selectzheguang();

	// 查询半遮光里布
	Composition selectbzheguang();

	// 根据商品号查询商品信息
	Map<String, Object> selectGoodxinxi(Integer goodsId);

	// 查询帘头的价格
	Double selectLiantou(Integer sampleId);

	// 测量填写信息查询布特殊图
	List<Map<String, Object>> selectTeshu();

	// 添加配件
	int insertpeijian(Goods pei);

	// 查询纱
	Composition selectSha(Integer sampleId);

	// 添加测量图片
	int insertImg(Map<String, Object> imgmap);

	// 修改商品
	int updateGoods(Goods goods);

	// 根据帘头图片id查询出图片的地址
	String selectShadeHeadImg(Integer integer);

	// 根据手机号查询uuid
	String selectWeiyi(String phone);

	// 查询广告
	List<String> selectGuanggao();

	// 存问题
	int insertProblem(Problem problem);

	// 存问题图片
	int insertWenti(Map<String, Object> map);

	// 查询帘头图片
	List<String> selectSheadheadImg();

	// 根据sampleId查询限制
	Map<String, Object> selectXianzhi(Integer sampleId);

	// 根据商品id查询布纱尺寸
	List<Map<String, Object>> selectSpecial(Integer goodsId);
	
	//成品帘的选择
	List<Map<String, Object>> selectFinishSpecial(Integer goodsId);

	// 根据id查询图片
	List<String> selectImgs(Integer integer);

	// 添加商品
	int insertGoods(Goods goods);

	// 插入订单和商品的关系
	int insertindentGoods(Map<String, Object> send);

	// 根据id查询图片
	String selectSampleImg(Integer sampleId);

	// 查询安装房间
	String selectLocationConent(Integer locationId);

	// 删除商品
	int deleteGoods(Integer goodsId);

	// 删除订单跟商品的关系
	int deleteIndentGoods(Integer goodsId);

	// 根据订单号查询商品
	List<Map<String, Object>> selectGoods(Map<String,Object> map);

	// 根据订单id查询手机号
	String selectPhone(Integer indentId);

	// 添加图片
	int insertTupian(Map<String, Object> map);

	// 消息中心
	List<Map<String, Object>> selectMessage(Integer page);

	// 查询银行卡
	List<Map<String, Object>> selectBank(Integer workerId);

	// 添加银行卡
	int insertBank(Map<String, Object> map);

	// 把默认改为不是默认
	int updateDefult(Integer workerId);

	// 设为默认
	int updateBank(Integer bankCardId);

	// 删除银行卡
	int deleteBank(Integer bankCard);

	// 查询默认银行卡
	Map<String, Object> selectDefultBank(Integer workerId);

	// 查询版权信息
	String selectCopyright();

	// 查询说明
	String selectAboutMe();

	// 查询软件使用许可协议
	String selectVersionIntroduce();

	// 查询平台服务协议
	String selectAgreement();

	// 获得安装完成后的拍照
	List<String> selectInstallImgs(Integer integer);

	// 添加成品帘测量图片
	int insertChengPinLianImg(Map<String, Object> cpl);

	// 查询成品帘的测量安装图片
	List<String> selectImgsCpl(Integer integer);

	// 查询成品帘安装图片
	List<String> selectImgsCplInstall(Integer integer);

	// 添加成品帘安装图片
	int insertInstallImgs(Map<String, Object> map);

	// 修改订单状态为已完成
	int updateIndentComplete(Integer indentId);

	// 根据订单号查询订单价格信息
	Map<String, Object> selectIndentPrice(Integer indentId);

	// 修改工人钱包
	int updateWalletComple(Map<String, Object> map);

	// 查询信誉保障金
	Double selectCreDit(Integer workerId);

	// 修改订单状态为已出发
	int updateIndentCF(Integer indentId);

	// 根据银行卡号查询银行卡信息
	Map<String, Object> selectBankCardOne(Integer bankCardId);

	// 查询唯一的盐
	String selectWeiyiid(Integer workerId);

	// 根据订单号查询商品个数
	Integer selectGoodsNum(Integer integer);

	// 删除工人旧的工作区域
	void deleteOldWorkerSpace(Integer workerId);

	// 插入工作区域
	int insertWorkerSpace(Map<String, Object> send);

	// 根据id查询工作区域
	List<Map<String, String>> selectWorkerSpace(Integer workerId);

	// 插入提现申请
	int insertMoneyRecord(MoneyRecord moneyRecord);

	// 根据商品号查询出是否提交了安装图片
	Integer selectinstall(Integer goodsId);

	// 查询区
	List<Map<String, String>> selectArea(String shi);

	// 根据id查询工作区域
	List<String> selectWorkerSpaces(Integer workerId);

	// 根据id删除工作区域
	int deleteWorkerSpaces(Integer workerId);

	// 根据订单号查询订单的一些信息
	Map<String, Object> selectIndent(Integer indentId);

	public void updatePotentialWorkerStatusByPhone(String phone);

	// 根据workId查询工人手机设备码
	String selectImeiByWorkerId(Integer workerId);

	// 根据workId设置工人手机设备码
	void updateImeiByWorkerId(Map<String, Object> m);

	// 查询工人注册的地址code{省份}
	String selectProvinceCodeForWorker(String province);

	// 查询工人注册的地址code{城市}
	String selectCityCodeForWorker(String city);
	
	//充值
	public void rechargeWallet(Map<String, Object> param);

	// 查询工人修改工作区域的相关信息
	String selectWorkerChangeAreaInfo(Integer workerId);

	// 更新工人修改工作区域的时间
	void updateWorkerChangeAreaInfo(Map<String, Object> m);
	
	// 更新工人修改地址的时间及修改后的地址
	void updateWorkerChangeAddressInfo(Map<String, Object> m);
	
	//工人第一次转账把支付宝在账号存起来
	int addWorkerAlipy(Worker worker);
	
	//提交工人提现信息，为了审核
	public int updateWorker(Worker worker);
	
	// 根据商品号查询商品信息
	Goods selectGoodsInfo(Integer integer);
	
	Goods_indent selectIndentIdByGoodsId(Integer goodsId);
	/**
	 * XGH 工人取消订单需要扣除金额查询
	 * @param territoryId
	 * @return
	 */
	public Map<String, Double> selectBaifenbi(int territoryId);
	/**
	 * @param integer
	 * @return
	 */
	public List<String> selectChengpinImgs(Integer integer);
	/**
	 * 查找工人的默认提现目标,用于清除工人提交申请提现时的无效状态
	 * @param workerId
	 * @return
	 */
	public List<BankCard> selectNoUseBank(Integer workerId);
	/**
	 * 修改之前存入无效银行卡状态
	 * @param idArray
	 * @return
	 */
	public int updateNoUseBank(@Param("idArray")JSONArray idArray);
	/**
	 * 工人取消测量订单，除了更新订单的状态,同时需要把工人对订单的修改变为无效
	 *xiaGuanghui 2017年6月1日 上午9:19:36 
	 *@param indentId
	 */
	public int updateGoodsIndentByGoodsIndentId(Integer indentId);
	/**
	 * 工人取消安装订单,如果有拍照上传照片,需要将该照片删除
	 *xiaGuanghui 2017年6月1日 下午4:44:12 
	 *@param indentId
	 *@return
	 */
	public List<Picture> selectinstallByIndentId(Integer indentId);
	/**
	 * 工人取消安装订单将其上传的照片标注为删除
	 *xiaGuanghui 2017年6月1日 下午4:55:07 
	 *@param pictureId
	 *@return
	 */
	public int updatePictureByPictureId(Integer pictureId);

	// // 查询工人鹿客学院信息
	// CollegeMsg selectCollegeMsg(Integer workerId);
	/**
	 * 通过订单号获取其下的商品信息，商品信息要满足价格计算对数据的需求
	 * @param map 商品号,顾客id
	 * @return
	 */
	Goods getGoodsToCaclPriceByGoodsId(Map<String, Object> map);
	
	Map<String, Object> getGoodsToCaclCurtainPriceByGoodsId(Integer goodsId);
	// 通过indentid得到所有商品的信息
	List<Goods> getGoodByIndentId(List<Integer> indentId);
	
	// 根据订单id得到所有的商品id
	List<Integer> getGoodIdByIndentId(Integer indentId);
	
	// 修改商品
	void updateGoodByGoodId(Map<String, Object> map);

	/**
	 * 根据indentId查询整个订单
	 * @param indentId 订单id
	 * @return
	 */
	Indent selectIndentByIndentId(Integer indentId);
	
	// 根据订单号查询订单中有多少个不一样的安装房间
	public Integer selectDistinct(Integer indentId);

	// 根据订单号查询其他安装房间有多少个不一样的其他房间
	public Integer selectOtherRooms(Integer indentId);
	//更新房间个数
	public Integer updateIndentRoom(Map<String, Object> map);
	
}
